/*-------------------------------------------------------------------------
 *
 * arch-arm.h
 *	  特定于 ARM 的原子操作考虑
 *
 * Portions Copyright (c) 2013-2022, PostgreSQL Global Development Group
 *
 * NOTES:
 *
 * src/include/port/atomics/arch-arm.h
 *
 *-------------------------------------------------------------------------
 */

/* 故意没有包含保护，应该仅由 atomics.h 包含 */
#ifndef INSIDE_ATOMICS_H
#error "should be included via atomics.h"
#endif

/*
 * ARM32 上的 64 位原子操作通过内核回退实现，因此
 * 可能会很慢，因此完全禁用。在 ARM64 上则不存在此问题。
 */
#if !defined(__aarch64__) && !defined(__aarch64)
#define PG_DISABLE_64_BIT_ATOMICS
#else
/*
 * ARMv8 的架构参考手册指出，对通用寄存器的对齐读/写是原子的。
 */
#define PG_HAVE_8BYTE_SINGLE_COPY_ATOMICITY
#endif  /* __aarch64__ || __aarch64 */
